package com.tang.juc.ThreadLocal;

/**
 * @author tlm
 * @version 1.0
 * @date 2020/4/28 15:05
 * ThreadLocal简介
 * 摘取自：https://mp.weixin.qq.com/s/cdHfTTvMpH60SwG2bjTMBw
 * 通常情况下，我们创建的变量是可以被任何一个线程访问并修改的。
 * 如果想实现每一个线程都有自己的专属本地变量该如何解决呢？
 * JDK中提供的ThreadLocal类正是为了解决这样的问题。ThreadLocal
 * 类主要解决的就是让每个线程绑定自己的值，可以将ThreadLocal
 * 类形象的比喻成存放数据的盒子，盒子中可以存储每个线程的私有数据。
 *
 * 如果你创建了一个ThreadLocal变量，那么访问这个变量的每个线程都
 * 会有这个变量的本地副本，这也是ThreadLocal变量名的由来。他们可
 * 以使用 get（） 和 set（） 方法来获取默认值或将其值更改为当前线
 * 程所存的副本的值，从而避免了线程安全问题。
 *
 * 再举个简单的例子：
 * 比如有两个人去宝屋收集宝物，这两个共用一个袋子的话肯定会产生争执，
 * 但是给他们两个人每个人分配一个袋子的话就不会出现这样的问题。如果把
 * 这两个人比作线程的话，那么ThreadLocal就是用来避免这两个线程竞争的。
 */
public class ThreadLocal1 {
}
